﻿using System;
using System.Collections;
using System.Collections.Generic;

namespace Microsoft.Practices.CompositeUI.Collections
{
    /// <summary>
    /// 	Represents a named collection of sites for UI elements.
    /// </summary>
    public class UIExtensionSiteCollection : ICollection, IEnumerable<string>, IDisposable
    {
        #region Implementation of IEnumerable

        /// <summary>
        /// 	Returns an enumerator that iterates through the collection.
        /// </summary>
        /// <returns>
        /// 	A <see cref = "T:System.Collections.Generic.IEnumerator`1" /> that can be used to iterate through the collection.
        /// </returns>
        /// <filterpriority>1</filterpriority>
        public IEnumerator<string> GetEnumerator()
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// 	Returns an enumerator that iterates through a collection.
        /// </summary>
        /// <returns>
        /// 	An <see cref = "T:System.Collections.IEnumerator" /> object that can be used to iterate through the collection.
        /// </returns>
        /// <filterpriority>2</filterpriority>
        IEnumerator IEnumerable.GetEnumerator()
        {
            return GetEnumerator();
        }

        #endregion

        #region Implementation of ICollection

        /// <summary>
        /// 	Copies the elements of the <see cref = "T:System.Collections.ICollection" /> to an <see cref = "T:System.Array" />, starting at a particular <see
        ///  	cref = "T:System.Array" /> index.
        /// </summary>
        /// <param name = "array">The one-dimensional <see cref = "T:System.Array" /> that is the destination of the elements copied from <see
        ///  	cref = "T:System.Collections.ICollection" />. The <see cref = "T:System.Array" /> must have zero-based indexing. </param>
        /// <param name = "index">The zero-based index in <paramref name = "array" /> at which copying begins. </param>
        /// <exception cref = "T:System.ArgumentNullException"><paramref name = "array" /> is null. </exception>
        /// <exception cref = "T:System.ArgumentOutOfRangeException"><paramref name = "index" /> is less than zero. </exception>
        /// <exception cref = "T:System.ArgumentException"><paramref name = "array" /> is multidimensional.-or- The number of elements in the source <see
        ///  	cref = "T:System.Collections.ICollection" /> is greater than the available space from <paramref name = "index" /> to the end of the destination <paramref
        ///  	name = "array" />. </exception>
        /// <exception cref = "T:System.ArgumentException">The type of the source <see cref = "T:System.Collections.ICollection" /> cannot be cast automatically to the type of the destination <paramref
        ///  	name = "array" />. </exception>
        /// <filterpriority>2</filterpriority>
        public void CopyTo(Array array, int index)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// 	Gets the number of elements contained in the <see cref = "T:System.Collections.ICollection" />.
        /// </summary>
        /// <returns>
        /// 	The number of elements contained in the <see cref = "T:System.Collections.ICollection" />.
        /// </returns>
        /// <filterpriority>2</filterpriority>
        public int Count
        {
            get
            {
                throw new NotImplementedException();
            }
        }

        /// <summary>
        /// 	Gets an object that can be used to synchronize access to the <see cref = "T:System.Collections.ICollection" />.
        /// </summary>
        /// <returns>
        /// 	An object that can be used to synchronize access to the <see cref = "T:System.Collections.ICollection" />.
        /// </returns>
        /// <filterpriority>2</filterpriority>
        public object SyncRoot
        {
            get
            {
                throw new NotImplementedException();
            }
        }

        /// <summary>
        /// 	Gets a value indicating whether access to the <see cref = "T:System.Collections.ICollection" /> is synchronized (thread safe).
        /// </summary>
        /// <returns>
        /// 	true if access to the <see cref = "T:System.Collections.ICollection" /> is synchronized (thread safe); otherwise, false.
        /// </returns>
        /// <filterpriority>2</filterpriority>
        public bool IsSynchronized
        {
            get
            {
                throw new NotImplementedException();
            }
        }

        #endregion

        #region Implementation of IDisposable

        /// <summary>
        /// 	Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
        /// </summary>
        /// <filterpriority>2</filterpriority>
        public void Dispose()
        {
            throw new NotImplementedException();
        }

        #endregion
    }
}